/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package otcapp.controlador.modelocombobox;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import otcapp.entidades.Oficina;

/**
 *
 * @author diego
 */
public class ModeloComboOficina extends DefaultComboBoxModel implements Comparator<Oficina> {

    private List<Oficina> listaOficinas;

    public ModeloComboOficina() {
        listaOficinas = new ArrayList<>();
        addElement("Seleccione una Oficina");


    }

    public ModeloComboOficina(List<Oficina> nuevalista) {

        listaOficinas = nuevalista;
        addElement("Seleccione una Oficina");
        for (Oficina oficina : nuevalista) {
            addElement(oficina.getNombreOficina());

        }


    }

    public void setListaCombo(List<Oficina> nuevalista) {
        listaOficinas = nuevalista;
        removeAllElements();
        addElement("Seleccione una Oficina");
        for (Oficina oficina : nuevalista) {
            addElement(oficina.getNombreOficina());

        }

    }

    public Oficina getOficinaSeleccionada() {
        Oficina oficinaEncontrada = null;
        for (Oficina oficina : listaOficinas) {
            if (oficina.getNombreOficina().equals(super.getSelectedItem().toString())) {
                oficinaEncontrada = oficina;
            }
        }

        return oficinaEncontrada;

    }

    public void agergarOficina(Oficina nuevaOficina) {
        if (listaOficinas == null) {
            listaOficinas = new ArrayList<>();
            addElement("Seleccione una Oficina");
        }
        for (Oficina oficina : listaOficinas) {
            if (oficina.getNombreOficina().equals(nuevaOficina.getNombreOficina())) {
                return;
            }
        }
        listaOficinas.add(nuevaOficina);
        super.addElement(nuevaOficina.getNombreOficina());
    }

    public List<Oficina> getListaOficina() {
        return listaOficinas;
    }

    public void setOficinaSeleccionada(Oficina oficinaSeleccionada) {
        if (listaOficinas != null) {
            for (Oficina oficina : listaOficinas) {
                if (oficina.getNombreOficina().equals(oficinaSeleccionada.getNombreOficina())) {
                    setSelectedItem(oficinaSeleccionada.getNombreOficina());
                }
            }
        }
    }

    public void quitarOficina(Oficina oficina) {
        for (int i = 0; i < listaOficinas.size(); i++) {
            if (listaOficinas.get(i).getId() == oficina.getId()) {
                listaOficinas.remove(i);
                removeElement(oficina.getNombreOficina());
            }
        }
    }

    public void ordenar() {
        Collections.sort(listaOficinas, this);
        removeAllElements();
        addElement("Seleccione una Oficina");

        for (Oficina oficina : listaOficinas) {
            addElement(oficina.getNombreOficina());
        }
    }

    @Override
    public int compare(Oficina o1, Oficina o2) {
        return o1.getNombreOficina().compareToIgnoreCase(o1.getNombreOficina());
    }
}
